The universal serial bus (USB) has become a common data and communication link for digital computational systems. USB ports have been integrated into general purpose devices, such as personal computers (PCs), peripheral devices, such as printers, embedded systems, such as portable audio and video players, storage devices, such as external and portable hard drives and external flash memory, input devices, such as keyboards and data gathering devices, and network devices. Typically, USB permits a host device, often a PC, to connect with client devices, such as peripheral devices, storage devices, and network devices. The universal serial bus also permits a hub device to couple to the host and to several client devices. Often, hub devices provide four or more universal serial bus (USB) ports for attaching other client devices and permitting communication with the host device. Typically, a hub device permits a single universal serial bus output from a host device to access one or more client devices.
When a client device is attached to a USB network, either through a hub device or directly to the host device, the client device causes a characteristic change in voltage within the connecting circuitry that indicates the presence of the client device. The host device sends a request for configuration data to an attached USB device, either directly or via a hub device. In the case of a direct connection, the host device sends a request to the client device, which in turn provides configuration data to the host device. Alternatively, the host device sends a request to a hub device. The hub device indicates the presence of a peripheral device attached to the hub device and the host sends a request for configuration data to the peripheral device via the hub device.
In response, the client device forwards configuration data to the host device. The configuration data typically includes a parameter associated with a power setting. Based on the universal serial bus specification, the client device may draw a maximum of 100 ma at start up and connection. However the client device, through the configuration data, may request additional power, up to 500 ma. The host device is constrained by the USB standard to a maximum power output via the universal serial bus. As such, the host device may decide, based on the configuration data, whether to allow the client device to connect to a network. For example, when other client devices are drawing power from the network and when the additional power requested by the connecting client device would cause the total power consumption to exceed the permissible maximum, the host device may prevent the connecting device from connecting to the network. When a particular client device is denied access to the network, the host device issues a suspend signal, limiting the client device's access to the network and to power. Typically, the client device is permitted to use 500 microamps (μa) of power when in the suspended mode.
In some embodiments, USB client devices may provide more than one configuration to the host device. The configurations may be provided in a configuration descriptor that specifies the number of configurations and provides the configurations. However, different operating systems selectively treat these additional configurations in different manners. For example, Macintosh® operating systems typically select the lowest power configuration. In an alternative example, Windows® operating systems typically select the first configuration. For devices that provide different functionality based on the available power, selection of the configuration influences the capabilities and operations of the client device. As such, manufacturers of client devices have limited control over client device performance when attached to the various host devices available in the market place. Therefore, an improved method of selecting a universal serial bus configuration would be desirable.